/*
 * main.cpp
 *
 *  Created on: 12/09/2010
 *      Author:
 */

#include "ArchivoRelativo.h"
#include "EntidadSerializable.h"
#include "Pelicula.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <stdlib.h>
using std::setw;
using std::cout;
using std::endl;
using std::left;
using std::cin;
using namespace std;

#define MAX_REG 10

int prueba()  		// Prueba para peliculas pero es igual para personas!
{
	ArchivoRelativo unArchivo( "archivoPeliculas.dat" , MAX_REG );

	int res;

	res = unArchivo.crear();
	res = unArchivo.abrir();

	EntidadSerializable unaPelicula( 1 , "El Origen" );
	unaPelicula.agregarAsociado(7000);
	unaPelicula.agregarAsociado(301);
	unaPelicula.agregarAsociado(2);
	res = unArchivo.escribir(unaPelicula);

	EntidadSerializable unaxPelicula( 2 , "Haus" );
	unArchivo.escribir(unaxPelicula);

	EntidadSerializable unadPelicula( 5 , "Perro Andaluz" );
	unArchivo.escribir(unadPelicula);

	EntidadSerializable unafgPelicula( 6 , "Across the Universe" );
	unafgPelicula.agregarAsociado(488);
	unArchivo.escribir(unafgPelicula);

	EntidadSerializable unagddPelicula( 9 , "Oxford" );
	unagddPelicula.agregarAsociado(5646);
	unagddPelicula.agregarAsociado(582);
	unArchivo.escribir(unagddPelicula);

	// Compruebo que cerrando y abriendo el archivo segun las primitivas, no se borra ni nada.
	unArchivo.cerrar();
	res = unArchivo.abrir();

	cout << left << setw(5) << "ID" << setw(20) << "Titulo" << endl;
	cout << endl;
	unsigned int i, id;
	EntidadSerializable otra;
	vector<int> unVec;
	for ( id = 1 ; id <= MAX_REG ; id++ )
	{
		otra = unArchivo.leer(id);
		cout << left << setw(5) << otra.getID() << setw(20) << otra.getRotulo();

		cout << "[";
		unVec = otra.getAsociados();
		for (i = 0 ; i < unVec.size() ; i++ )
		{
			cout << unVec.at(i) << " ";
		}
		cout << "]" << endl;;
	}

	unArchivo.cerrar();

	cout << endl << "Fin de la prueba 1." << endl;

	vector<string> rutaPelicula; // ruta vacia
	Pelicula unaPeli( "6" , rutaPelicula );

	cout << endl << "Un musical temático sobre los Beatles: " << unaPeli.getNombre() << endl;

	cout << "Fin de la prueba 2." << endl;

	return 0;
}

/* para probar la aplicación de ArchivoRelativo */
/*
int main ()
{
	prueba();
	return 0;
}*/

